\chapter{bsp\+\_\+log }
\hypertarget{md_bsp_2log_2bsp__log}{}\label{md_bsp_2log_2bsp__log}\index{bsp\_log@{bsp\_log}}
\label{md_bsp_2log_2bsp__log_autotoc_md15}%
\Hypertarget{md_bsp_2log_2bsp__log_autotoc_md15}%




\href{mailto:neozng1@hnu.edu.cn}{\texttt{neozng1@hnu.\+edu.\+cn}}\hypertarget{md_bsp_2log_2bsp__log_autotoc_md16}{}\doxysection{\texorpdfstring{使用说明}{使用说明}}\label{md_bsp_2log_2bsp__log_autotoc_md16}
bsp\+\_\+log是基于segger RTT实现的日志打印模块。

推荐使用{\ttfamily \doxylink{bsp__log_8h_source}{bsp\+\_\+log.\+h}}中提供了三级日志：


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ LOGINFO(format,...)}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ LOGWARNING(format,...)}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ LOGERROR(format,...)}}

\end{DoxyCode}


分别用于输出不同等级的日志。注意\+RTT不支持直接使用{\ttfamily f}进行浮点格式化,要使用{\ttfamily void Float2\+Str(char \texorpdfstring{$\ast$}{*}str, float va);}转化成字符串之后再发送。

{\bfseries{若想启用\+RTT，必须通过{\ttfamily launch.\+json}的{\ttfamily debug-\/jlink}启动调试（不论使用什么调试器）。}} 按照{\ttfamily VSCode+\+Ozone环境配置}完成配置之后的cmsis dap和daplink是可以支持\+Jlink全家桶的。

另外，若你使用的是cmsis-\/dap和daplink，\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}请在 {\itshape jlink} 调试任务启动之后再打开{\ttfamily log}任务。\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}（均在项目文件夹下的.vsocde/task.\+json中，有注释自行查看）。否则可能出线\+RTT viewer无法连接客户端的情况。

在ozone中查看log输出，直接打开console调试任务台和terminal调试中断便可看到调试输出。

\begin{quote}
由于ozone版本的原因，可能出现日志不换行或没有颜色。 \end{quote}
\hypertarget{md_bsp_2log_2bsp__log_autotoc_md17}{}\doxysection{\texorpdfstring{自定义输出}{自定义输出}}\label{md_bsp_2log_2bsp__log_autotoc_md17}
你也可以自定义输出格式，详见\+Segger RTT的文档。


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordtype}{int}\ printf\_log(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *fmt,\ ...);}
\DoxyCodeLine{\textcolor{keywordtype}{void}\ Float2Str(\textcolor{keywordtype}{char}\ *str,\ \textcolor{keywordtype}{float}\ va);\ \textcolor{comment}{//\ 输出浮点需要先用此函数进行转换}}

\end{DoxyCode}


调用第一个函数，可以通过jlink或dap-\/link向调试器连接的上位机发送信息，格式和printf相同，示例如下：


\begin{DoxyCode}{0}
\DoxyCodeLine{printf\_log(\textcolor{stringliteral}{"{}Hello\ World!\(\backslash\)n"{}});}
\DoxyCodeLine{printf\_log(\textcolor{stringliteral}{"{}Motor\ \%d\ met\ some\ problem,\ error\ code\ \%d!\(\backslash\)n"{}},3,1);}

\end{DoxyCode}


第二个函数可以将浮点类型转换成字符串以方便发送：


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ current\_feedback=114.514;}
\DoxyCodeLine{\textcolor{keywordtype}{char}*\ str\_buff[64];}
\DoxyCodeLine{Float2Str(str\_buff,current\_feedback);}
\DoxyCodeLine{printf\_log(\textcolor{stringliteral}{"{}Motor\ \%d\ met\ some\ problem,\ error\ code\ \%d!\(\backslash\)n"{}},3,1);}

\end{DoxyCode}
 